package com.clps.cn.Activite03;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.junit.Test;

/**
 * 删除已经部署的流程定义
 *
 * 背后影响的表:
 * act_ge_bytearray
 act_re_deployment
 act_re_procdef
 */
public class DeleteProcessDefinition {

    /**
     * 注意事项：当我们正在执行的这一套流程，此时要删除流程定义的信息，会失败
     * 如果公司强制要求,我们要进行级联删除，可以使用repositoryService.deleteDeploment（"1",true）
     * //参数为true代表级联删除，此时就会先删除没有完成的流程节点，最后就月删除流程定义的信息，false的值代表不级联删除
     */
    @Test
    public void testDelete() {
        //01得到ProcessEngline对象
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();

        //02:创建RepositoryService对象
        RepositoryService repositoryService = defaultProcessEngine.getRepositoryService();

        //03:删除流程的定义，参数代表流程部署id
        /**
         * processDefinition.getId() = myProcess_1:1:4
         * processDefinition.getName() = null
         * processDefinition.getKey() = myProcess_1
         * processDefinition.getVersion() = 1
         * processDefinition.getDeploymentId() = 1
         */
        repositoryService.deleteDeployment("1");
    }
}
